﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;

namespace CoreEx.DynamicInvoker
{
    /// <summary>
    /// Represents a class that is capable of creating a hashcode based on a list of other objects.
    /// </summary>
    public interface IHashBuilder
    {
        ///// <summary>
        ///// Creates a new integer value that represents the combined hashcodes from the <paramref name="sourceList"/>.
        ///// </summary>
        ///// <param name="sourceList">The source list of objects that will be used to create the new hashcode.</param>
        ///// <returns>An integer value that represents the combined hashcodes from the <paramref name="sourceList"/>.</returns>
        //int GetHashCode(object[] sourceList);

        int CreateHashCode(MemberInfo memberInfo, Type[] parameterTypes);
        
        int CreateHashCode(Type type, string memberName , Type[] parameterTypes);
    }
}
